package lib

import (
	"bufio"
	"fmt"
	"io/ioutil"
	"net/http"
	"regexp"

	"golang.org/x/net/html/charset"
	"golang.org/x/text/transform"
)

type City struct {
	Link string
	Name string
}

// 获取种子网站的所有的城市列表
func GetCityParse(path string) []City {
	resp, error := http.Get(path)

	if error != nil {
		panic(error)
	}

	// 获取正确的编码内容
	rs := Decode(resp)

	citys := getCitys(rs)

	fmt.Println(citys)

	return citys
}

// 根据爬取的内容获取城市列表
func getCitys(html string) []City {
	reg := regexp.MustCompile(`<a href="(http://www.zhenai.com/zhenghun/[0-9a-zA-Z]+)"[^>]*>([^<]+)</a>`)

	list := reg.FindAllStringSubmatch(html, -1)

	cityList := make([]City, 0)

	for _, v := range list {
		cityList = append(cityList, City{
			v[1],
			v[2],
		})
	}

	return cityList
}

// 根据返回流选择相应的编码格式化返回文档
func Decode(resp *http.Response) string {

	// 获取1024字节进行解析是什么编码
	headByte, _ := bufio.NewReader(resp.Body).Peek(1024)

	e, _, _ := charset.DetermineEncoding(headByte, "")

	ioreader := transform.NewReader(resp.Body, e.NewDecoder())

	str, _ := ioutil.ReadAll(ioreader)

	return fmt.Sprintf("%s", str)
}
